//
//  HMMainViewController.swift
//  WeiBo14
//
//  Created by HM on 16/3/2.
//  Copyright © 2016年 HM. All rights reserved.
//

import UIKit

class HMMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let tb = HMTabBar()
        
        // weak var weakSelf = self
        // 这种方式也可以,只需要在闭包里面使用 weakSelf
        
        // 1. 使用 [weak self] 解决循环引用,在闭包里面的 self 就是一个可选值,因为其指向对象销毁之后,闭包里面的 self 会置为nil
        // 2. 使用 [unowned self] 解决循环引用,但是其修饰的 self 在闭包里面是一个直实存在的值,一显 self 指向的对象销毁,那么就会崩溃, 与 oc中的 unsafe_unretained 一样
        tb.composeButtonClickClosure = { [weak self] in
            print("哈哈我要弹出撰写按钮动画 \(self)")
            
            let composeView = HMComposeView()
            composeView.show(self!)
            // self?.view.addSubview(composeView)
            
            // weakSelf?.view
            // self?.view
            // 弹出控制器
        }
        // readOnly 的属性,不能直接设置值
        // self.tabBar = tb
        // 间接设置值
        self.setValue(tb, forKeyPath: "tabBar")
        
        // 可能统一设置 tabBar 上面渲染的颜色
        // self.tabBar.tintColor = UIColor.orangeColor()
        
        // 添加子控制器
        addChildViewController(HMHomeTableViewController(), imageNamed: "tabbar_home", title: "首页")
        addChildViewController(HMMessageTableViewController(), imageNamed: "tabbar_message_center", title: "消息")
        addChildViewController(HMDiscoverTableViewController(), imageNamed: "tabbar_discover", title: "发现")
        addChildViewController(HMProfileTableViewController(), imageNamed: "tabbar_profile", title: "我")
    }
    
    /// 添加子控制器
    ///
    /// - parameter childController: 子控制器
    /// - parameter imageNamed:      对应的图标的版本名
    /// - parameter title:           标题
    private func addChildViewController(childController: UIViewController, imageNamed: String, title: String) {
        // 设置成我们自己的tabBarItem
        childController.tabBarItem = HMTabBarItem()
        // 设置标题
//        childController.navigationItem.title = title
//        childController.tabBarItem.title = title
        childController.title = title
        // 设置默认以及选中的图标
        childController.tabBarItem.image = UIImage(named: imageNamed)?.imageWithRenderingMode(.AlwaysOriginal)
        childController.tabBarItem.selectedImage = UIImage(named: "\(imageNamed)_selected")?.imageWithRenderingMode(.AlwaysOriginal)
        
        // 设置文字选中的颜色
        let attr = [NSForegroundColorAttributeName: UIColor.orangeColor()]
        childController.tabBarItem.setTitleTextAttributes(attr, forState: UIControlState.Selected)
        
        // 设置文字大小
//        let fontAttr = [NSFontAttributeName: UIFont.systemFontOfSize(40)]
//        childController.tabBarItem.setTitleTextAttributes(fontAttr, forState: UIControlState.Normal)
        // 如果只显示图片的话,解决图片靠上的问题
//        childController.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
        
        addChildViewController(HMNavigationController(rootViewController: childController))
//        addChildViewController(childController)
        
    }

}
